package com.yungu.swift.assets.driver.model.param;

import com.yungu.swift.base.model.admin.AdminParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author : cuixiuyin
 * @date : 2019/6/24
 */
@Data
@ApiModel(value = "车辆信息对象")
public class AdminCarParam extends AdminParam {


    @ApiModelProperty(value = "uuid")
    private String uuid;

    @ApiModelProperty(value = "车牌号", required = true)
    private String plateNum;

    @ApiModelProperty(value = "1.出租车 2.专车 3.跨城 4.出租车", required = true, example = "1")
    private Integer businessType;

    @ApiModelProperty(value = "行驶证照片正页")
    private String drivingLicenseImg;

    @ApiModelProperty(value = "行驶证照片副页")
    private String drivingLicenseSubImg;

    @ApiModelProperty(value = "运输证字号/出租车-营运证号")
    private String certificate;

    @ApiModelProperty(value = "营运证照片")
    private String operationCertificateImg;

    @ApiModelProperty(value = "监督卡照片")
    private String monitoringCardImg;

    @ApiModelProperty(value = "人车合影")
    private String manCarImg;

    @ApiModelProperty(value = "所属代理id")
    private String agentUuid;

    @ApiModelProperty(value = "所属公司id")
    private String companyUuid;

    @ApiModelProperty(value = "级别类型id")
    private String carModelUuid;

    @ApiModelProperty(value = "车牌颜色(1:蓝色 2:黄色 3:黑色 4:白色 9:其他)")
    private String plateColor;

    @ApiModelProperty(value = "车牌照片")
    private String plateImage;

    @ApiModelProperty(value = "车辆类型(以车辆行驶证为准)")
    private String vehicleType;

    @ApiModelProperty(value = "发动机号")
    private String engineId;

    @ApiModelProperty(value = "车辆VIN码")
    private String vin;

    @ApiModelProperty(value = "车辆注册日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date certifyDateA;

    @ApiModelProperty(value = "行驶证发证日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date drivingLicenseDate;

    @ApiModelProperty(value = "车辆运输证发证机构")
    private String transAgency;

    @ApiModelProperty(value = "车辆经营区域")
    private String transArea;

    @ApiModelProperty(value = "车辆运输证有效期起")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date transDateStart;

    @ApiModelProperty(value = "车辆运输证有效期止")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date transDateStop;

    @ApiModelProperty(value = "车辆初次登记日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date certifyDateB;

    @ApiModelProperty(value = "保险信息列表")
    private List<CarInsuranceParam> carInsuranceParamList;

    @ApiModelProperty(value = "车辆燃料类型 A:汽油 B:柴油 C:电 D:混合油 E:天然气 F:液化石油气 L:甲醇 M:乙醇 N:太阳能 O:混合动力 Y:无 Z:其他")
    private String fuelType;

    @ApiModelProperty(value = "发动机排量")
    private String engineDisplace;

    @ApiModelProperty(value = "发动机功率", example = "0")
    private Integer enginePower;

    @ApiModelProperty(value = "车辆轴距")
    private Double wheelbase;

    @ApiModelProperty(value = "车辆行驶里程")
    private Double vehicleKilometers;

    @ApiModelProperty(value = "车辆检修状态(0 未检修 1 已检修 2 未知)",example = "0")
    private Integer fixState;

    @ApiModelProperty(value = "车辆下次年检时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date nextFixDate;

    @ApiModelProperty(value = "车辆年度审验状态 0 未年审 1 审核通过 2 审核不通过", example = "0")
    private Integer checkState;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "年审时间")
    private Date checkDate;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "下次年审时间")
    private Date nextCheckDate;

    @ApiModelProperty(value = "发票打印设备序列号")
    private String feePrintId;

    @ApiModelProperty(value = "卫星定位装置品牌")
    private String gpsBrand;

    @ApiModelProperty(value = "卫星定位装置型号")
    private String gpsModel;

    @ApiModelProperty(value = "卫星定位装置IMEI号")
    private String gpsImei;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "卫星定位设备安装日期")
    private Date gpsInstallDate;

    @ApiModelProperty(value = "车辆技术状况")
    private String vehicleTechnicalCondition;

    @ApiModelProperty(value = "安全性能情况")
    private String safetyPerformance;

    @ApiModelProperty(value = "核定载客位", example = "0")
    private Integer seats;

    @ApiModelProperty(value = "车辆厂牌")
    private String brand;

    @ApiModelProperty(value = "车辆型号")
    private String model;

    @ApiModelProperty(value = "车外观颜色")
    private String carColor;

    @ApiModelProperty(value = "车辆所有人")
    private String ownerName;

    @ApiModelProperty(value = "所属人电话")
    private String ownerNameMobile;

    @ApiModelProperty(value = "车辆照片")
    private String carImage;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "报备日期")
    private Date registerDate;

    @ApiModelProperty(value = "服务类型 1: 网络预约出租车 2：巡游出租车 3：私人小客车合乘", example = "1")
    private Integer commercialType;

    @ApiModelProperty(value = "行驶证号")
    private String drivingLicenseNo;


    @Data
    @ApiModel
    public static class CarInsuranceParam implements Serializable {

        @ApiModelProperty(value = "保险公司名称")
        private String insurCom;

        @ApiModelProperty(value = "保险号")
        private String insurNum;

        @ApiModelProperty(value = "保险类型")
        private String insurType;

        @ApiModelProperty(value = "保险金额")
        private BigDecimal insurCount;

        @ApiModelProperty(value = "赔付额度")
        private BigDecimal insurLimit;

        @ApiModelProperty(value = "保险生效时间")
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        private Date insurEff;

        @ApiModelProperty(value = "保险到期时间")
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        private Date insurExp;
    }

}
